package ca.etsmtl.log120.tp3.tests;

import junit.framework.TestCase;
import ca.etsmtl.log120.tp3.cartes.Carte;
import ca.etsmtl.log120.tp3.cartes.CouleurCarte;
import ca.etsmtl.log120.tp3.cartes.Denomination;
import ca.etsmtl.log120.tp3.mains.Main;
import ca.etsmtl.log120.tp3.rangs.Brelan;
import ca.etsmtl.log120.tp3.rangs.CarteSuperieure;
import ca.etsmtl.log120.tp3.rangs.MainPleine;
import ca.etsmtl.log120.tp3.rangs.Paire;
import ca.etsmtl.log120.tp3.rangs.Quintuplet;
import ca.etsmtl.log120.tp3.rangs.AbstractRangAnalysable;
import ca.etsmtl.log120.tp3.rangs.UtilMain;

/******************************************************
Cours : LOG120
Session : E2011
Groupe : 01
Projet : Laboratoire #3
Etudiants : Nicolas Blais Miko
 	 		Yohan Trepanier-Montpetit
Codes perm. : BLAN24079109
			  TREY16079108
Professeur : Chamseddine Talhi
Charge de labo : Eric Goulet
Nom du fichier : ListeAnalyseurs.java
Date cree : 2011-07-06
Date dern. modif. 2011-07-06
*************************************************** ****
Historique des modifications
*************************************************** ****

***************************************************/

public class CartePareilTest extends TestCase {
	
	Main mainA, mainB, mainC;
	
	public CartePareilTest() {
	
		mainA = new Main();
		mainA.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.TROIS, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.QUATRE, CouleurCarte.CARREAU));
		mainA.add(new Carte(Denomination.SIX, CouleurCarte.CARREAU));
		
		mainB = new Main();
		mainB.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		mainB.add(new Carte(Denomination.AS, CouleurCarte.CARREAU));
		
		mainC = new Main();
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		mainC.add(new Carte(Denomination.DEUX, CouleurCarte.CARREAU));
		
	}
	
	public void testPaireUtil(){
		
		assertEquals(Denomination.DEUX, UtilMain.isIdentique(mainA, 2));
	}
	
	public void testBrelanUtil(){
		
		assertEquals(Denomination.AS, UtilMain.isIdentique(mainB, 3));
	}
	
	AbstractRangAnalysable analyseur;
	
	public void testPaire(){
		analyseur = new Paire();
		assertEquals(true, analyseur.reconnaitreMain(mainA));
	}
	
	public void testBrelan(){
		analyseur = new Brelan();
		assertEquals(true, analyseur.reconnaitreMain(mainB));
	}
	
	public void testMainPleine(){
		analyseur = new MainPleine();
		assertEquals(true, analyseur.reconnaitreMain(mainB));
	}
	
	public void testQuintuplet(){
		analyseur = new Quintuplet();
		assertTrue(analyseur.reconnaitreMain(mainC));
		assertFalse(analyseur.reconnaitreMain(mainB));
	}
	
	public void testCarteSuperieure(){
		analyseur = new CarteSuperieure();
		assertTrue(analyseur.reconnaitreMain(mainA));
		assertEquals(Denomination.SIX, ((CarteSuperieure)analyseur).getTopDenomination());
	}
	
}
